#include <sys/ipc.h>
#include <sys/sem.h>
#include "sem.h"

key_t key;
int semid;
int pid;
union semun mysemun;
struct sembuf P,V;

/**
 *@breif:初始化信号量
 *@author：马德顺
 */
int init_sem(void)
{
	//获取key值
	if((key = ftok(".",'s')) == -1)
	{
		perror("ftok");
		return -1;
	}

	//创建信号灯
	if((semid = semget(key,2,IPC_CREAT| 0666))  == -1)
	{
		perror("semget");
		return -1;
	}
	
	//初始化
	mysemun.val = 1;
	semctl(semid,0,SETVAL,mysemun);
	
	//初始化 P  V操作
	P.sem_num=0;
	P.sem_op=-1;
	P.sem_flg=SEM_UNDO;
		
	V.sem_num=0;
	V.sem_op=1;
	V.sem_flg=SEM_UNDO;

	return 0;
}